package com.example.express.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.express.domain.ResponseResult;
import com.example.express.domain.bean.UserFeedback;
import com.example.express.domain.enums.FeedbackTypeEnum;
import com.example.express.domain.vo.BootstrapTableVO;
import com.example.express.domain.vo.UserFeedbackVO;

import java.util.Map;

/**
 * 用户反馈服务业务
 * @author 周欣
 */
public interface UserFeedbackService extends IService<UserFeedback> {

    /**
     * 分页查询前台反馈信息
     * @param page
     * @param wrapper
     * @return
     */
    BootstrapTableVO<UserFeedbackVO> pageUserFeedbackVO(Page<UserFeedback> page, QueryWrapper<UserFeedback> wrapper);

    /**
     * 创建反馈消息
     * @param userId
     * @param feedbackTypeEnum
     * @param content
     * @param orderId
     * @return
     */
    boolean createFeedback(String userId, FeedbackTypeEnum feedbackTypeEnum, String content, String orderId);

    /**
     * 批量删除用户反馈
     * @param ids
     * @param id
     * @return
     */
    ResponseResult batchCancelOrder(String[] ids, String id);

    /**
     * 获取反馈面板Map(管理员端)
     * String: 今天和带处理的反馈
     * Integer: 数量
     * @return
     */
    Map<String, Integer> getAdminDashboardData();

    /**
     * 获取反馈面板Map(用户端)
     * String: 等待处理和处理中的反馈
     * Integer: 数量
     * @param userId 用户id
     * @return
     */
    Map<String, Integer> getUserDashboardData(String userId);

    /**
     * 获取反馈面板Map(配送员端)
     * String: 今天和带处理的反馈
     * Integer: 数量
     * @return
     */
    Map<String, Integer> getCourierDashboardData();
}
